perm filename CALPLT.SAI[SYS,HE]1 blob sn#004151 filedate 1972-06-29 generic text, type T, neo UTF8
BEGIN "CALPLT"

REQUIRE "PLOTS.REL[SYS,HE]" LOAD_MODULE;
FORTRAN PROCEDURE PLOTS(INTEGER I);
FORTRAN PROCEDURE PLOT(INTEGER X, Y, PEN);
FORTRAN PROCEDURE SYMBOL(INTEGER X, Y, SIZE, ANGLE, TEXT, N);
FORTRAN PROCEDURE WHERE(INTEGER X, Y);

INTERNAL INTEGER DOPLT;
INTEGER LTXTX, LTXTY, I, BRK, EOF, J, STRT, CNT;
INTEGER ARRAY T[0:10];
LABEL L1, L2;
STRING INP;

SIMPLE INTEGER PROCEDURE PACK(STRING A);
	BEGIN INTEGER L, I;
	L ← LENGTH(A);
	I ← -1;
	WHILE LENGTH(A) DO
		BEGIN
		T[I←I+1] ← CVASC(A);
		A ← IF LENGTH(A)>5 THEN A[6 TO ∞] ELSE NULL;
		END;
	RETURN(L);
	END;

	SETBREAK(1,'12,'15,"IN");
	SETFORMAT(0,0);
	DOPLT ← TRUE;
	OPEN(1,"DSK",0,2,0,1000,BRK,EOF);
	PLOTS(I);
	IF I THEN USERERR(0,0,"NO PLOTTER");
L1:	PLOT(0,2560,2);
	PLOT(3330,2560,1);
	PLOT(3330,0,1);
	PLOT(0,0,1);
	SYMBOL(0,-200,6,0,T[0],PACK("DATA SETS:"));
	WHERE(LTXTX, LTXTY);
L2:	OUTSTR("SET # = ");
	I ← CVD(INCHWL);
	LOOKUP(1,"DATA"&CVS(I),J);
	IF J THEN BEGIN OUTSTR("LOOKUP FAILED"&'15&'12); GO TO L2; END;
	J ← INTSCAN(INP ← INPUT(1,1), BRK);
	IF ¬J THEN BEGIN OUTSTR("FILE EMPTY"&'15&'12); GO TO L2; END;
	SYMBOL(LTXTX, LTXTY, 6, 0, T[0], PACK("  "&CVS(I)));
	WHERE(LTXTX, LTXTY);
		BEGIN REAL ARRAY DAT[1:J,1:2];
		FOR I←1 STEP 1 UNTIL J DO
			BEGIN
			INP ← INPUT(1,1);
			DAT[I,1] ← REALSCAN(INP,BRK);
			DAT[I,2] ← REALSCAN(INP,BRK);
			END;
		STRT ← 1;
		DO 	BEGIN INTEGER X,Y;
			CNT ← ABS(DAT[STRT,1])+STRT;
			PLOT(X←DAT[STRT+1,1]*10.0+0.5,Y←2559.5-DAT[STRT+1,2]*10.0,3);
			J ← 2;
			IF STRT+2>CNT THEN
				BEGIN
				PLOT(X+2,Y+2,1);
				PLOT(X-2,Y-2,1);
				END ELSE
				FOR I ← STRT+2 STEP 1 UNTIL CNT DO
					BEGIN
					PLOT(DAT[I,1]*10.0+0.5,2559.5-DAT[I,2]*10.0,J);
					J ← 1;
					END;
			IF DAT[STRT,1]>0 THEN PLOT(X,Y,1);
			STRT ← DAT[STRT,2];
			END UNTIL ¬STRT;
		END;
	OUTSTR("NEW PLOT? ");
	IF INCHWL="Y" THEN BEGIN PLOT(0,3000,-3); GO TO L1; END;
	GO TO L2;
	END;